
利用 JS 去改變 CSS 變數的值
偽類::root 表示 <html> (MDN)元素,裡面可以存放 Css 的變數。定義變數時要加 --,使用時要加 var。
:root {
--base: #ffc600;
}
img {
background: var(--base);
}
類陣列(NodeList,MDN) : 使用 querySelectorAll 得出來的東西, console 去看它會很像陣列,但是仔細看它的 Prototype 裡面只有一些方法可以使用,這個主題使用 forEach 。
const inputs = document.querySelectorAll('.controls input');
console.log("inputs",inputs);
input 效果:使用 change 可以更換值, 想要動態效果使用 mousemove。
inputs.forEach((input) => {
input.addEventListener('change', changeHandler)
input.addEventListener('mousemove', changeHandler)
})
資料改動畫面:
製作上面的 callback changeHandler
function changeHandler() {}
變數修改值:因為 spacing 、 blur 後面要加 px,所以先在 input 綁上 data-(自定義) 的值,之後在 js 裡加上去。
<!-- HTML 設定: data-sizing="px" -->
<input id="spacing" type="range" name="spacing" min="10" max="200" value="10" data-sizing="px">
<!-- HTML 設定: this.dataset.sizing -->
<script>
// 取得有 dataset 沒有就回傳 ''
const suffix = this.dataset.sizing || '';
</script>
使用 setProperty 去呼叫,前面放屬性名稱,後面放值
MDN 語法:
// CSS 屬性 新的属性值 可以放 "important" CSS 優先级
style.setProperty(propertyName, value, priority);
:root 有三種呈現的方式,分別是 document.querySelector('html')、document.querySelector(':root')、document.documentElement 。
NodeList 與 Array 方法
const inputs = document.querySelectorAll('.controls input');
console.log("inputs",inputs);
const arr = [1,2,3]
console.log("arr",arr);
NodeList

arr